package com.itheima.myzipsream;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class MyStreamDemo1 {
    public static void main(String[] args) throws IOException {
        //压缩一个文件夹
        //创建file对象关联的文件夹
        File src = new File("D:\\aaa");
        //创建file对象表示压缩包放在哪里
        File destParent = src.getParentFile();
        //创建file对象表示压缩包的路径
        File dest = new File(destParent, src.getName() + ".zip");
        //创建压缩流关联压缩包
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(dest));
        //进行获取src里面的每一个文件变成ZipEntry对象然后再将其放入压缩包中
        toZip(src, zos, src.getName());
        //释放资源
        zos.close();
    }

    public static void toZip(File src, ZipOutputStream zos, String name) throws IOException {
        File[] files = src.listFiles();
        for (File file : files) {
            //是文件的操作
            if (file.isFile()) {
                ZipEntry entry = new ZipEntry(name + "\\" + file.getName());
                zos.putNextEntry(entry);
                //进行文件的写入
                FileInputStream fis = new FileInputStream(file);
                int b;
                while ((b = fis.read()) != -1) {
                    zos.write(b);
                }
                //进行关流的操作
                fis.close();
                zos.closeEntry();
            } else {
                //不是文件的操作 进行递归
                toZip(file, zos, name + "\\" + file.getName());
            }
        }
    }

}
